package com.yidu.t299.service.twj.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yidu.t299.contant.CommonConstant;
import com.yidu.t299.dao.twj.SysRoleMapper;
import com.yidu.t299.domain.twj.SysRole;
import com.yidu.t299.service.twj.SysRoleBiz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author twj
 * @version 1.0.0
 */

@Service
@Transactional
public class SysRoleBizImpl implements SysRoleBiz {
    @Autowired
    private SysRoleMapper sysRoleMapper;


    /**
     * 根据主键删除角色信息(实际上是修改flag字段的值，不能直接删除信息)
     *
     * @param roleId 角色编号
     * @return 影响的行数(1 : 成功)
     */
    @Override
    public int deleteByPrimaryKey(Integer roleId) {
        return sysRoleMapper.deleteByPrimaryKey(roleId);
    }

    /**
     * 根据主键批量删除角色信息(实际上是修改flag字段的值，不能直接删除信息)
     *
     * @param array 角色编号数组
     * @return 影响的行数(1 : 成功)
     */
    @Override
    public int deleteBatch(Integer[] array) {
        return sysRoleMapper.deleteBatch(array);
    }

    /**
     * 添加角色信息
     *
     * @param sysRole 角色对象
     */
    @Override
    public void insert(SysRole sysRole) {
        sysRoleMapper.insert(sysRole);
        //添加权限信息
        /*if(!CollectionUtils.isEmpty(sysRole.getRightCodeList())){
            sysRoleMapper.insertRoleRight(sysRole);
        }*/
    }

    /**
     * 根据主键查询角色信息
     *
     * @param roleId 角色编号
     * @return 角色对象
     */
    @Override
    public SysRole selectByPrimaryKey(Integer roleId) {
        return sysRoleMapper.selectByPrimaryKey(roleId);
    }

    /**
     * 根据主键查询角色信息(不筛选状态)
     *
     * @param roleId 角色编号
     * @return 角色对象
     */
    @Override
    public SysRole selectById(Integer roleId) {
        return sysRoleMapper.selectById(roleId);
    }

    /**
     * 根据所给属性值来修改其字段值
     *
     * @param sysRole 角色对象
     */
    @Override
    public void update(SysRole sysRole) {
        sysRoleMapper.update(sysRole);
        /*if(sysRole.getRightCodeList() != null){
            //删除角色信息
            sysRoleMapper.deleteRoleRight(sysRole.getRoleId());
            if(!CollectionUtils.isEmpty(sysRole.getRightCodeList())){
                //添加角色&权限信息
                sysRoleMapper.insertRoleRight(sysRole);
            }
        }*/
    }

    /**
     * 批量查询
     *
     * @param sysRole 角色对象
     * @return 角色对象集合
     */
    @Override
    public List<SysRole> select(SysRole sysRole) {
        return sysRoleMapper.select(sysRole);
    }

    /**
     * 同步案例中：分页条件查询，我们反馈的是PageInfo对象
     * 但是PageHelper建议尽量不要跨层，以便后期维护。
     * 比如：后期我们通过Mybatis-plus替换mybatis，那么如果跨层，就需要多个地方更改。
     *
     * @param pageNum  页码
     * @param pageSize 每页行数
     * @param sysRole  角色对象
     */
    @Override
    public Map<String, Object> findPage(Integer pageNum, Integer pageSize, SysRole sysRole) {
        //分页业务
        PageHelper.startPage(pageNum, pageSize);
        List<SysRole> list = sysRoleMapper.select(sysRole);
        PageInfo<SysRole> pageInfo = new PageInfo<>(list);
        //1.当前页面数据（数据列表）2.此次查询的总记录数
        Map<String, Object> pageMap = new HashMap<>();
        pageMap.put(CommonConstant.PAGE_LIST, list);
        pageMap.put(CommonConstant.PAGE_TOTAL, pageInfo.getTotal());
        return pageMap;
    }


}
